/*
 * Copyright 2002-2016 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.aopalliance.aop;

/**
 *
 * 如何理解 Advice、Advisor、Interceptor
 * 在理解Advice、Advisor和Interceptor之前，我们首先需要明确它们通常出现在面向切面编程（Aspect-Oriented Programming，AOP）的上下文中。AOP是一种编程范式，用于增加模块化，通过允许开发者将横切关注点（cross-cutting concerns）如日志记录、事务管理、安全等分离到独立的模块中。
 *
 * 1. Advice
 * 分析与思考
 * 定义：Advice定义了在连接点（join points）上应该执行的操作。连接点是在程序执行过程中，可以插入一个横切关注点的点，例如方法调用或异常抛出。
 *
 * 作用：Advice允许你在不修改原有业务逻辑的情况下，为程序添加额外的行为。
 *
 * 回答
 * Advice是AOP中的一个核心概念，它定义了在特定连接点（如方法执行前后、抛出异常时等）应该执行的动作。例如，你可以在方法执行前后添加日志记录，或者在一个方法执行前后进行权限检查。Advice的种类包括前置通知（Before advice）、后置通知（After advice）、环绕通知（Around advice）等。
 *
 * 2. Advisor
 * 分析与思考
 * 定义：Advisor是一个特殊的组件，它将Advice与切点（pointcut）结合起来。切点定义了哪些连接点应该被增强（即应用Advice）。
 *
 * 作用：Advisor的作用是将Advice应用到特定的连接点上，从而实现了对横切关注点的精确控制。
 *
 * 回答
 * Advisor在AOP中扮演了桥梁的角色，它将Advice与切点（Pointcut）关联起来。切点是一个表达式，用于匹配特定的连接点。通过Advisor，你可以指定哪些连接点应该应用特定的Advice。这样，你就可以精确地控制哪些方法调用或异常抛出会被增强。
 *
 * 3. Interceptor
 * 分析与思考
 * 定义：Interceptor（拦截器）是一个更通用的概念，它不仅仅局限于AOP领域。在Java EE、Spring等框架中，Interceptor用于在请求处理流程中的特定点插入额外的逻辑。
 *
 * 作用：Interceptor的作用与Advice类似，都是用于在方法调用前后添加额外的逻辑。但Interceptor通常与Web请求处理流程相关联，而Advice则更侧重于业务逻辑的增强。
 *
 * 回答
 * Interceptor是一个更广泛的概念，它不仅仅局限于AOP。在Web开发框架中，Interceptor常用于在请求处理流程中插入额外的逻辑，如日志记录、权限检查、事务管理等。虽然Interceptor的作用与Advice相似，但它们的应用场景和关注点有所不同。Advice更侧重于业务逻辑的增强，而Interceptor则更关注于请求处理流程的拦截和控制。
 *
 * 总结
 * Advice：定义了在连接点上应该执行的操作，是AOP中的核心概念。
 *
 * Advisor：将Advice与切点结合，实现了对横切关注点的精确控制。
 *
 * Interceptor：一个更通用的概念，用于在请求处理流程中插入额外的逻辑，与Web开发框架紧密相关。
 *
 * 通过理解这三个概念，您可以更好地掌握AOP的原理和应用，从而在软件开发中更有效地实现横切关注点的模块化。
 *
 * Advice在Spring框架中有什么作用？
 *
 * Adivisor与Pointcut有何区别？
 * <br>
 * Tag interface for Advice. Implementations can be any type
 * of advice, such as Interceptors.
 * <br> 标记接口。实现类可以是任何类型的通知，如拦截器。
 *
 * Advice defines what should happen at join points (specific points during program execution).
 * There are several types of advice:
 * <br> Advice 定义了在连接点（程序执行过程中的特定点）应该发生什么。
 * 有几种类型的通知：
 * 	Before Advice: Runs before a method execution.
 *  After Returning Advice: Runs after a method has returned successfully.
 *  After Throwing Advice: Runs if a method exits by throwing an exception.
 *  After (finally) Advice: Runs regardless of the outcome of the advised method.
 *  Around Advice: Surrounds a join point, allowing you to perform custom behavior before and after the method execution.
 *
 *
 * @author Rod Johnson
 * @version $Id: Advice.java,v 1.1 2004/03/19 17:02:16 johnsonr Exp $
 */
public interface Advice {

}
